#include <iostream>
using namespace std;

class A{
public:
    static int x; //仅仅是声明，x是不属于任何对象的
protected:
    static int y; //仅仅是声明，y是不属于任何对象的
private:
    static int z; //仅仅是声明，z是不属于任何对象的
};

class B: public A{
public:
    B(){++x;++y;/*++z;*/}
};

// 需要在类外实现x,y,z
int A::x = 1;
int A::y = 1;
int A::z = 1;

int main(){
    A a;
    cout << a.x << A::x << endl; // 可以用a.x也可以用A::x访问静态成员
    B b;
    // 静态变量继承后，仍然会使用基类的变量，不会额外声明新的静态变量
    cout << a.x << A::x << endl;
    cout << b.x << B::x << endl;
    //cout << a.y << A::y << endl; // protected不可在外访问
    //cout << a.z << A::z << endl; // private不可在外访问
    return 0;
}
